//
//  SqQueue.hpp
//  408数据结构
//
//  Created by Cai Yuanhao on 2022/3/26.
//

//Queue的简单顺序实现，很多时候并不适用


#ifndef SqQueue_h
#define SqQueue_h
#endif /* SqQueue_h */

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 50
typedef int ElemType;

typedef struct
{
    ElemType data[MAXSIZE];
    int front, rear;
} SqQueue;

void initQueue(SqQueue &Q){
    Q.front=Q.rear=0;
}

bool isEmptyQueue(SqQueue Q){
    if(Q.rear==Q.front){
        return true;
    }
    return false;
}


bool isFullQueue(SqQueue Q){
    // 其实不够合理，因为存在假溢出情况
    if(Q.rear==MAXSIZE){
        return true;
    }
    return false;
}

bool EnQueue(SqQueue &Q,ElemType e){
    if(isFullQueue(Q)){
        return false;
    }
    Q.data[Q.rear]=e;
    Q.rear++;
    return true;
}

bool DeQueue(SqQueue &Q,ElemType &e){
    if(isEmptyQueue(Q)){
        return false;
    }
    e=Q.data[Q.front];
    Q.front++;
}


